<?php
/**
 * Description of gdtexto
 *
 * @author del Valle, Federico <quaidy@gmail.com>
 */
class gdtexto {
   private $im = null;
   private $texto;
   private $color = null;
   private $angulo = 0;
   private $size = 20;
   private $fuente = 3;
   private $x = 0;
   private $y = 0;

   /**
    * Setea la fuente que se va a utilizar en el texto
    *
    * @param string $fuente path real al archivo ttf 
    */
   public function set_fuente($fuente) {
     $this->fuente = (empty ($fuente)) ? $this->fuente : $fuente;
   }

    /**
     * Genera un texto para insertar en una imagen
     *
     * @param gdimagen $imagen imagen donde se va a insertar el texto
     * @param string $texto Texto
     * @param string $fuente Ruta real al archivo de la fuente
     * @param int $x posicion en el eje X
     * @param int $y posicion en el eje Y
     * @param string $tamaño tamaño de la fuente
     * @param int $angulo angulo del texto
     */
   public function __construct(gdimagen $imagen, $texto,$fuente="",$x="",$y="",$tamaño="",$angulo="") {
    $this->im = $imagen->get_handler();
    $this->set_texto($texto, $tamaño);
    $this->fuente = $fuente;
    $this->posicion($x, $y,$angulo);
   }

   /**
    * Posiciona el texto, relativo a la imagen
    * @param int $x posicion en eje X
    * @param int $y posicion en eje Y
    */
   public function posicion($x,$y,$angulo = "") {
     $this->x = $x;
     $this->y = $y;
     $this->angulo = (empty($angulo)) ? 0 : $angulo;
   }

   /**
    * Setea el color del texto
    *
    * @param int $r rojo
    * @param int $g verde
    * @param int $b azul
    */
   public function set_color($r,$g,$b) {
      if ($this->im == null) {
        throw new Exception("Manejador de imagen invalido");
      }
      $this->color = imagecolorclosest($this->im, $r, $g, $b);
   }
   
   public function set_imagen(gdimagen $imagen) {
     $this->im= $imagen->get_handler();
   }
   
   public function get_fuente() {
     return $this->fuente;
   }

   public function get_texto() {
     return $this->texto;
   }

   /**
    *  Procesa el texto y lo pega a la imagen
    */
   public function procesar() {
     if ($this->color == null) {
       throw new Exception("Falta asignarle un color al texto");
     }
     imagefttext($this->im,$this->size,$this->angulo,$this->x,$this->y,$this->color,$this->fuente,$this->texto);
   }


   /**
    * Setea el texto y su tamaño
    *
    * @param string $texto que se va a mostrar
    * @param int $tamaño tamaño del texto
    */
   public function set_texto($texto, $tamaño = "") {
     $this->texto = $texto;
     $this->size = ($tamaño != "" && is_numeric($tamaño))? $tamaño : $this->size;
   }
}
?>